package com.xh.bussiness.permission.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xh.bussiness.system.model.GroupUser;
import com.xh.core.model.SuperEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * 用户表
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("ts_user")
public class User extends SuperEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 身份证号
     */
    private String idCard;
    /**
     * 用户名
     */
    @NotEmpty(message = "用户名不能为空")
    private String username;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 手机号
     */
    @Size(min=11,max=11,message = "手机号码必须为11位")
    private String mobile;

    /**
     * 机构ID
     */
    private String orgId;

    /**
     * 头像URL
     */
    private String headUrl;

    /**
     * 性别（1男，0女）
     */
    private Integer sex;

    /**
     * 密码
     */
    private String password;

    /**
     * 支付密码
     */
    private String payPassword;

    /**
     * 生日
     */
    private Date birthday;

    /**
     * 用户类型（1超管，2管理员，3用户）
     */
    private Integer type;

    /**
     * 是否是后台用户（0否，1是）
     */
    private Integer isAdmin;

    /**
     * 是否是前台用户（0否，1是）
     */
    private Integer isFront;

    /**
     * 状态（0正常，1试用，2禁用）
     */
    private Integer status;

    /**
     * 是否试用用户（0否，1是）
     */
    private Integer isTry;

    /**
     * 身份（0管理员，1校长，2教师）
     */
    private Integer identity;

    /**
     * 最近一次登录
     */
    private Date lastLoginTime;

    /**
     * 是否为系统用户
     */
    private Integer sysUser;

    /**
     * 在线情况：0离线；1：在线
     */
    private Integer online;

    /**
     * 来源 1:校管家；2：校宝；3：飞鸿业务系统 4：学邦
     */
    private Integer source;

    /**
     * 第三方Id
     */
    private String thirdId;

    private Integer resDown;

    private Integer resPrint;

    /**
     * 用户所属角色
     */
    @TableField(exist = false)
    private List<UserRole> userRoles;

    /**
     * 用户所属校区
     */
    @TableField(exist = false)
    private List<UserSchool> userSchools;

    /**
     * 用户组
     */
    @TableField(exist = false)
    private List<GroupUser> userGroups;

    /**
     * 备课平均分
     */
    @TableField(exist = false)
    private Double prepareLessonAvgScore;

}
